
<!doctype html>
<html lang="en" class="no-js">
  <head>
    
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width,initial-scale=1">
      
      
      
        <link rel="canonical" href="https://daptin.github.io/daptin/actions/actions/">
      
      <link rel="icon" href="../../images/theme-favicon.png">
      <meta name="generator" content="mkdocs-1.2.3, mkdocs-material-8.2.4">
    
    
      
        <title>What are actions - Daptin</title>
      
    
    
      <link rel="stylesheet" href="../../assets/stylesheets/main.2d9f7617.min.css">
      
        
        <link rel="stylesheet" href="../../assets/stylesheets/palette.e6a45f82.min.css">
        
      
    
    
    
      
        
        
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
      
    
    
      <link rel="stylesheet" href="../../css/theme_extra.css">
    
    <script>__md_scope=new URL("../..",location),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
    
      

    
    
  </head>
  
  
    
    
    
    
    
    <body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
  
    
    
    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
    <label class="md-overlay" for="__drawer"></label>
    <div data-md-component="skip">
      
        
        <a href="#what-are-actions" class="md-skip">
          Skip to content
        </a>
      
    </div>
    <div data-md-component="announce">
      
    </div>
    
    
      

<header class="md-header" data-md-component="header">
  <nav class="md-header__inner md-grid" aria-label="Header">
    <a href="../.." title="Daptin" class="md-header__button md-logo" aria-label="Daptin" data-md-component="logo">
      
  <img src="../../images/theme-logo.png" alt="logo">

    </a>
    <label class="md-header__button md-icon" for="__drawer">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
    </label>
    <div class="md-header__title" data-md-component="header-title">
      <div class="md-header__ellipsis">
        <div class="md-header__topic">
          <span class="md-ellipsis">
            Daptin
          </span>
        </div>
        <div class="md-header__topic" data-md-component="header-topic">
          <span class="md-ellipsis">
            
              What are actions
            
          </span>
        </div>
      </div>
    </div>
    
    
    
      <label class="md-header__button md-icon" for="__search">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
      </label>
      <div class="md-search" data-md-component="search" role="dialog">
  <label class="md-search__overlay" for="__search"></label>
  <div class="md-search__inner" role="search">
    <form class="md-search__form" name="search">
      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
      <label class="md-search__icon md-icon" for="__search">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
      </label>
      <nav class="md-search__options" aria-label="Search">
        
        <button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
        </button>
      </nav>
      
    </form>
    <div class="md-search__output">
      <div class="md-search__scrollwrap" data-md-scrollfix>
        <div class="md-search-result" data-md-component="search-result">
          <div class="md-search-result__meta">
            Initializing search
          </div>
          <ol class="md-search-result__list"></ol>
        </div>
      </div>
    </div>
  </div>
</div>
    
    
  </nav>
  
</header>
    
    <div class="md-container" data-md-component="container">
      
      
        
          
        
      
      <main class="md-main" data-md-component="main">
        <div class="md-main__inner md-grid">
          
            
              
              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    


<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
  <label class="md-nav__title" for="__drawer">
    <a href="../.." title="Daptin" class="md-nav__button md-logo" aria-label="Daptin" data-md-component="logo">
      
  <img src="../../images/theme-logo.png" alt="logo">

    </a>
    Daptin
  </label>
  
  <ul class="md-nav__list" data-md-scrollfix>
    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" type="checkbox" id="__nav_1" >
      
      
      
      
        <label class="md-nav__link" for="__nav_1">
          Introduction
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" aria-label="Introduction" data-md-level="1">
        <label class="md-nav__title" for="__nav_1">
          <span class="md-nav__icon md-icon"></span>
          Introduction
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../.." class="md-nav__link">
        About
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../faq.md" class="md-nav__link">
        FAQs
      </a>
    </li>
  

            
          
            
              
  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_3" type="checkbox" id="__nav_1_3" >
      
      
      
      
        <label class="md-nav__link" for="__nav_1_3">
          How to use
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" aria-label="How to use" data-md-level="2">
        <label class="md-nav__title" for="__nav_1_3">
          <span class="md-nav__icon md-icon"></span>
          How to use
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../setting-up/installation/" class="md-nav__link">
        Download and Deploy
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../setting-up/settingup/" class="md-nav__link">
        Accessing the web dashboard
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
    
  
  
    
    <li class="md-nav__item md-nav__item--active md-nav__item--nested">
      
      
        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2" type="checkbox" id="__nav_2" checked>
      
      
      
      
        <label class="md-nav__link" for="__nav_2">
          Documentation
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" aria-label="Documentation" data-md-level="1">
        <label class="md-nav__title" for="__nav_2">
          <span class="md-nav__icon md-icon"></span>
          Documentation
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_1" type="checkbox" id="__nav_2_1" >
      
      
      
      
        <label class="md-nav__link" for="__nav_2_1">
          User management
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" aria-label="User management" data-md-level="2">
        <label class="md-nav__title" for="__nav_2_1">
          <span class="md-nav__icon md-icon"></span>
          User management
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../user-management/new-users/" class="md-nav__link">
        New User
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../user-management/access/" class="md-nav__link">
        Access Permissions
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../user-management/signin/" class="md-nav__link">
        Sign in API
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../setting-up/data_modeling/" class="md-nav__link">
        Data model
      </a>
    </li>
  

            
          
            
              
  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_3" type="checkbox" id="__nav_2_3" >
      
      
      
      
        <label class="md-nav__link" for="__nav_2_3">
          HTTP JSON API
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" aria-label="HTTP JSON API" data-md-level="2">
        <label class="md-nav__title" for="__nav_2_3">
          <span class="md-nav__icon md-icon"></span>
          HTTP JSON API
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../apis/crud/" class="md-nav__link">
        CRUD API
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../apis/crud/" class="md-nav__link">
        Action API
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../apis/crud/" class="md-nav__link">
        Relation API
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../apis/crud/" class="md-nav__link">
        Aggregation API
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../apis/crud/" class="md-nav__link">
        State machine API
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../apis/crud/" class="md-nav__link">
        Metadata API
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

            
          
            
              
  
  
    
  
  
    
    <li class="md-nav__item md-nav__item--active md-nav__item--nested">
      
      
        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" checked>
      
      
      
      
        <label class="md-nav__link" for="__nav_2_4">
          Actions
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" aria-label="Actions" data-md-level="2">
        <label class="md-nav__title" for="__nav_2_4">
          <span class="md-nav__icon md-icon"></span>
          Actions
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
    
  
  
    <li class="md-nav__item md-nav__item--active">
      
      <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
      
      
        
      
      
        <label class="md-nav__link md-nav__link--active" for="__toc">
          What are actions
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <a href="./" class="md-nav__link md-nav__link--active">
        What are actions
      </a>
      
        

<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  
  
  
    
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      Table of contents
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#what-are-actions-and-why-do-i-need-this" class="md-nav__link">
    What are actions and why do I need this
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#action-schema" class="md-nav__link">
    Action schema
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#action-name" class="md-nav__link">
    Action Name
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#action-label" class="md-nav__link">
    Action Label
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#ontype" class="md-nav__link">
    OnType
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#action-instance" class="md-nav__link">
    Action instance
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#input-fields" class="md-nav__link">
    Input fields
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#validations" class="md-nav__link">
    Validations
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#conformations" class="md-nav__link">
    Conformations
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#outfields" class="md-nav__link">
    OutFields
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#javascript-in-fields-" class="md-nav__link">
    JavaScript in fields - "!..."
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#referencing-previous-outcomes" class="md-nav__link">
    Referencing previous outcomes
  </a>
  
</li>
      
    </ul>
  
</nav>
      
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../default_actions/" class="md-nav__link">
        Actions list
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../outcomes/" class="md-nav__link">
        Action OutComes
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../examples/" class="md-nav__link">
        Examples
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../features/enable-graphql/" class="md-nav__link">
        GraphQL
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../features/enable-data-auditing/" class="md-nav__link">
        Data Auditing
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../features/enable-multilingual-table/" class="md-nav__link">
        Multilingual Table
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../features/enable-smtp-imap/" class="md-nav__link">
        SMTP/IMPS server
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../state/machines/" class="md-nav__link">
        State tracking
      </a>
    </li>
  

            
          
            
              
  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_10" type="checkbox" id="__nav_2_10" >
      
      
      
      
        <label class="md-nav__link" for="__nav_2_10">
          OAuth
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" aria-label="OAuth" data-md-level="2">
        <label class="md-nav__title" for="__nav_2_10">
          <span class="md-nav__icon md-icon"></span>
          OAuth
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../extend/oauth_connection/" class="md-nav__link">
        OAuth Connections
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../extend/oauth_token/" class="md-nav__link">
        OAuth Tokens
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../integrations/overview/" class="md-nav__link">
        3rd party API Integrations
      </a>
    </li>
  

            
          
            
              
  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_12" type="checkbox" id="__nav_2_12" >
      
      
      
      
        <label class="md-nav__link" for="__nav_2_12">
          Cloud store
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" aria-label="Cloud store" data-md-level="2">
        <label class="md-nav__title" for="__nav_2_12">
          <span class="md-nav__icon md-icon"></span>
          Cloud store
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../cloudstore/" class="md-nav__link">
        Cloud store
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../cloudstore/cloudstore/" class="md-nav__link">
        Available cloud stores
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../cloudstore/cloudstore/" class="md-nav__link">
        Asset columns
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../cloudstore/cloudstore/" class="md-nav__link">
        Asset columns
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../cloudstore/sites/" class="md-nav__link">
        Sites
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../cloudstore/assetcolumns/" class="md-nav__link">
        Cloud store backed asset columns
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../websockets/websocket/" class="md-nav__link">
        Websockets
      </a>
    </li>
  

            
          
            
              
  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_15" type="checkbox" id="__nav_2_15" >
      
      
      
      
        <label class="md-nav__link" for="__nav_2_15">
          Sub-sites
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" aria-label="Sub-sites" data-md-level="2">
        <label class="md-nav__title" for="__nav_2_15">
          <span class="md-nav__icon md-icon"></span>
          Sub-sites
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../subsite/subsite/" class="md-nav__link">
        Creating a subsite
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../subsite/grapes/" class="md-nav__link">
        Live editing a subsite
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../subsite/basic_auth/" class="md-nav__link">
        Basic Authentication
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

            
          
            
              
  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_16" type="checkbox" id="__nav_2_16" >
      
      
      
      
        <label class="md-nav__link" for="__nav_2_16">
          Internal Documents
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" aria-label="Internal Documents" data-md-level="2">
        <label class="md-nav__title" for="__nav_2_16">
          <span class="md-nav__icon md-icon"></span>
          Internal Documents
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../data-modeling/data_storage/" class="md-nav__link">
        Data store format
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../extend/data_exchange/" class="md-nav__link">
        Data exchange and sync
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../streams/streams/" class="md-nav__link">
        Data streams
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../setting-up/configurations/" class="md-nav__link">
        Global Configuration
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
  </ul>
</nav>
                  </div>
                </div>
              </div>
            
            
              
              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    

<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  
  
  
    
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      Table of contents
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#what-are-actions-and-why-do-i-need-this" class="md-nav__link">
    What are actions and why do I need this
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#action-schema" class="md-nav__link">
    Action schema
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#action-name" class="md-nav__link">
    Action Name
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#action-label" class="md-nav__link">
    Action Label
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#ontype" class="md-nav__link">
    OnType
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#action-instance" class="md-nav__link">
    Action instance
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#input-fields" class="md-nav__link">
    Input fields
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#validations" class="md-nav__link">
    Validations
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#conformations" class="md-nav__link">
    Conformations
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#outfields" class="md-nav__link">
    OutFields
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#javascript-in-fields-" class="md-nav__link">
    JavaScript in fields - "!..."
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#referencing-previous-outcomes" class="md-nav__link">
    Referencing previous outcomes
  </a>
  
</li>
      
    </ul>
  
</nav>
                  </div>
                </div>
              </div>
            
          
          <div class="md-content" data-md-component="content">
            <article class="md-content__inner md-typeset">
              
                


<h1 id="what-are-actions">What are actions</h1>
<p>An action is a set of outcomes (as defined in the action schema) which is executed when action endpoint is invoked.  </p>
<p>An action can have a set of required input fields or none at all. Actions can also be built to handle callbacks/webhooks from other services (like payment gateway server to server notification).</p>
<p>Actions can be thought of as follows:</p>
<ul>
<li>A set of inputs (key value pair, extracted from query params and request body)</li>
<li>A set of outcomes based on the inputs</li>
</ul>
<h2 id="what-are-actions-and-why-do-i-need-this">What are actions and why do I need this</h2>
<p>Create/Read/Update/Delete (CRUD) APIs are only basic APIs exposed on the database, and you would rarely want to make those API available to your end user. Reasons could be multiple</p>
<ul>
<li>The end user doesn't (immediately) owe the data they create</li>
<li>Creating a "row"/"data entry" entry doesn't signify completion of a process or a flow</li>
<li>Usually a "set of entities" is to be created and not just a single entity (when you create a user, you also want to create a usergroup also and associate the user to usergroup)</li>
<li>You could allow user to update only some fields of an entity and not all fields (eg user can change their name, but not email)</li>
<li>Changes based on some entity (when you are going through a project, a new item should automatically belong to that project)</li>
</ul>
<p>Actions provide a powerful abstraction over the CRUD and to handle a variety of use cases. Actions can also make use of operations imported from OpenAPI Specs of other services.</p>
<p>To quickly understand what actions are, lets see what happened when you "signed up" on Daptin.</p>
<p>Take a look at how "Sign up" action is defined. We will go through each part of this definition
An action is performed on an entity. Let's also remember that <code>world</code> is an entity itself.</p>
<h2 id="action-schema">Action schema</h2>
<div class="highlight"><pre><span></span><code><span class="nt">Name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">signup</span><span class="w"></span>
<span class="nt">Label</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Sign up</span><span class="w"></span>
<span class="nt">InstanceOptional</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span><span class="w"></span>
<span class="nt">OnType</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">user_account</span><span class="w"></span>
<span class="nt">InFields</span><span class="p">:</span><span class="w"></span>
<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">Name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">name</span><span class="w"></span>
<span class="w">  </span><span class="nt">ColumnType</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">label</span><span class="w"></span>
<span class="w">  </span><span class="nt">IsNullable</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span><span class="w"></span>
<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">Name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">email</span><span class="w"></span>
<span class="w">  </span><span class="nt">ColumnType</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">email</span><span class="w"></span>
<span class="w">  </span><span class="nt">IsNullable</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span><span class="w"></span>
<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">Name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">password</span><span class="w"></span>
<span class="w">  </span><span class="nt">ColumnType</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">password</span><span class="w"></span>
<span class="w">  </span><span class="nt">IsNullable</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span><span class="w"></span>
<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">Name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Password Confirm</span><span class="w"></span>
<span class="w">  </span><span class="nt">ColumnName</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">passwordConfirm</span><span class="w"></span>
<span class="w">  </span><span class="nt">ColumnType</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">password</span><span class="w"></span>
<span class="w">  </span><span class="nt">IsNullable</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span><span class="w"></span>
<span class="nt">Validations</span><span class="p">:</span><span class="w"></span>
<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">ColumnName</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">email</span><span class="w"></span>
<span class="w">  </span><span class="nt">Tags</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">email</span><span class="w"></span>
<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">ColumnName</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">name</span><span class="w"></span>
<span class="w">  </span><span class="nt">Tags</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">required</span><span class="w"></span>
<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">ColumnName</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">password</span><span class="w"></span>
<span class="w">  </span><span class="nt">Tags</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">eqfield=InnerStructField[passwordConfirm],min=8</span><span class="w"></span>
<span class="nt">Conformations</span><span class="p">:</span><span class="w"></span>
<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">ColumnName</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">email</span><span class="w"></span>
<span class="w">  </span><span class="nt">Tags</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">email</span><span class="w"></span>
<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">ColumnName</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">name</span><span class="w"></span>
<span class="w">  </span><span class="nt">Tags</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">trim</span><span class="w"></span>
<span class="nt">OutFields</span><span class="p">:</span><span class="w"></span>
<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">user_account</span><span class="w"></span>
<span class="w">  </span><span class="nt">Method</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">POST</span><span class="w"></span>
<span class="w">  </span><span class="nt">Reference</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">user</span><span class="w"></span>
<span class="w">  </span><span class="nt">Attributes</span><span class="p">:</span><span class="w"></span>
<span class="w">    </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;~name&quot;</span><span class="w"></span>
<span class="w">    </span><span class="nt">email</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;~email&quot;</span><span class="w"></span>
<span class="w">    </span><span class="nt">password</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;~password&quot;</span><span class="w"></span>
<span class="w">    </span><span class="nt">confirmed</span><span class="p">:</span><span class="w"> </span><span class="s">&#39;0&#39;</span><span class="w"></span>
<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">usergroup</span><span class="w"></span>
<span class="w">  </span><span class="nt">Method</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">POST</span><span class="w"></span>
<span class="w">  </span><span class="nt">Reference</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">usergroup</span><span class="w"></span>
<span class="w">  </span><span class="nt">Attributes</span><span class="p">:</span><span class="w"></span>
<span class="w">    </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;!&#39;Home</span><span class="nv"> </span><span class="s">group</span><span class="nv"> </span><span class="s">for</span><span class="nv"> </span><span class="s">&#39;</span><span class="nv"> </span><span class="s">+</span><span class="nv"> </span><span class="s">user.name&quot;</span><span class="w"></span>
<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">user_user_id_has_usergroup_usergroup_id</span><span class="w"></span>
<span class="w">  </span><span class="nt">Method</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">POST</span><span class="w"></span>
<span class="w">  </span><span class="nt">Reference</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">user_usergroup</span><span class="w"></span>
<span class="w">  </span><span class="nt">Attributes</span><span class="p">:</span><span class="w"></span>
<span class="w">    </span><span class="nt">user_id</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;$user.reference_id&quot;</span><span class="w"></span>
<span class="w">    </span><span class="nt">usergroup_id</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;$usergroup.reference_id&quot;</span><span class="w"></span>
<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">client.notify</span><span class="w"></span>
<span class="w">  </span><span class="nt">Method</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ACTIONRESPONSE</span><span class="w"></span>
<span class="w">  </span><span class="nt">Attributes</span><span class="p">:</span><span class="w"></span>
<span class="w">    </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">success</span><span class="w"></span>
<span class="w">    </span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Success</span><span class="w"></span>
<span class="w">    </span><span class="nt">message</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Signup Successful</span><span class="w"></span>
<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">client.redirect</span><span class="w"></span>
<span class="w">  </span><span class="nt">Method</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ACTIONRESPONSE</span><span class="w"></span>
<span class="w">  </span><span class="nt">Attributes</span><span class="p">:</span><span class="w"></span>
<span class="w">    </span><span class="nt">location</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;/auth/signin&quot;</span><span class="w"></span>
<span class="w">    </span><span class="nt">window</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">self</span><span class="w"></span>
</code></pre></div>
<h2 id="action-name">Action Name</h2>
<div class="codehilite"><pre><span></span><code>    Name:             &quot;signup&quot;,
</code></pre></div>

<p>Name of the action, this should be unique for each actions. Actions are identified by this name</p>
<h2 id="action-label">Action Label</h2>
<div class="codehilite"><pre><span></span><code>    Label:            &quot;Sign up&quot;,
</code></pre></div>

<p>Label is for humans</p>
<h2 id="ontype">OnType</h2>
<div class="codehilite"><pre><span></span><code>    OnType:           &quot;user_account&quot;,
</code></pre></div>

<p>The primary type of entity on which the action happens. This is used to know where the actions should come up on the UI</p>
<h2 id="action-instance">Action instance</h2>
<div class="codehilite"><pre><span></span><code>    InstanceOptional: true,
</code></pre></div>

<p>If the action requires an "instance" of that type on which the action is defined (more about this below). So "Sign up" is defined on "user" table, but an instance of "user" is not required to initiate the action. This is why the "Sign up" doesnt ask you to select a user (which wouldn't make sense either)</p>
<h2 id="input-fields">Input fields</h2>
<div class="codehilite"><pre><span></span><code>    InFields: []api2go.ColumnInfo
</code></pre></div>

<p>This is a set of inputs which the user need to fill in to initiate that action. As we see here in case of "Sign up", we ask for four inputs</p>
<ul>
<li>Name</li>
<li>Email</li>
<li>Password</li>
<li>Confirm password</li>
</ul>
<p>Note that the ColumnInfo structure is the same one we used to <a href="/setting-up/entities">define tables</a>.</p>
<h2 id="validations">Validations</h2>
<div class="highlight"><pre><span></span><code><span class="w">         </span><span class="nx">Validations</span><span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="nx">ColumnTag</span><span class="w"></span>
</code></pre></div>
<p>Validations validate the user input and rejects if some validation fails</p>
<div class="highlight"><pre><span></span><code><span class="w">            </span><span class="p">{</span><span class="w"></span>
<span class="w">                </span><span class="nt">&quot;ColumnName&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;email&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">                </span><span class="nt">&quot;Tags&quot;</span><span class="p">:</span><span class="w">       </span><span class="s2">&quot;email&quot;</span><span class="w"></span>
<span class="w">            </span><span class="p">}</span><span class="w"></span>
</code></pre></div>
<p>This tells that the "email" input should actually be an email.</p>
<p>One of the more interesting validations is cross field check</p>
<div class="codehilite"><pre><span></span><code><span class="w">        </span><span class="err">{</span><span class="w"></span>
<span class="w">            </span><span class="nl">ColumnName</span><span class="p">:</span><span class="w"> </span><span class="ss">&quot;password&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">            </span><span class="nl">Tags</span><span class="p">:</span><span class="w">       </span><span class="ss">&quot;eqfield=InnerStructField[passwordConfirm],min=8&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">        </span><span class="err">}</span><span class="p">,</span><span class="w"></span>
</code></pre></div>

<p>This tells that the value entered by user in the password field should be equal to the value in passwordConfirm field. And the minimum length should be 8 characters.</p>
<h2 id="conformations">Conformations</h2>
<div class="codehilite"><pre><span></span><code>    Conformations: []ColumnTag
</code></pre></div>

<p>Conformations help to clean the data before the action is carried out. The frequently one used are <code>trim</code> and <code>email</code>.</p>
<ul>
<li>Trim: trim removes white spaces, which are sometimes accidently introduced when entering data</li>
<li>Email: email conformation will normalize the email. Things like lowercase + trim</li>
</ul>
<h2 id="outfields">OutFields</h2>
<div class="codehilite"><pre><span></span><code>    OutFields: []Outcome
</code></pre></div>

<p>OutFields are the list of outcomes which the action will result in. The outcomes are evaluated in a top to bottom manner, and the result of one outcome is accessible when evaluating the next outcome.</p>
<p>We have defined three outcomes in our "Sign Up" action.</p>
<ul>
<li>Create a user<div class="codehilite"><pre><span></span><code><span class="w">    </span><span class="err">{</span><span class="w"></span>
<span class="w">        </span><span class="nl">Type</span><span class="p">:</span><span class="w">      </span><span class="ss">&quot;user_account&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">        </span><span class="k">Method</span><span class="err">:</span><span class="w">    </span><span class="ss">&quot;POST&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">        </span><span class="nl">Reference</span><span class="p">:</span><span class="w"> </span><span class="ss">&quot;user&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">        </span><span class="nl">Attributes</span><span class="p">:</span><span class="w"> </span><span class="k">map</span><span class="o">[</span><span class="n">string</span><span class="o">]</span><span class="n">interface</span><span class="err">{}{</span><span class="w"></span>
<span class="w">            </span><span class="ss">&quot;name&quot;</span><span class="err">:</span><span class="w">      </span><span class="ss">&quot;~name&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">            </span><span class="ss">&quot;email&quot;</span><span class="err">:</span><span class="w">     </span><span class="ss">&quot;~email&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">            </span><span class="ss">&quot;password&quot;</span><span class="err">:</span><span class="w">  </span><span class="ss">&quot;~password&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">            </span><span class="ss">&quot;confirmed&quot;</span><span class="err">:</span><span class="w"> </span><span class="ss">&quot;0&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">        </span><span class="err">}</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="err">}</span><span class="p">,</span><span class="w"></span>
</code></pre></div>

</li>
</ul>
<p>This tells us that, the first outcome is of type "user". The outcome is a "New User" (POST). It could alternatively have been a Update/Find/Delete operation.</p>
<p>The attributes maps the input fields to the fields of our new user.</p>
<ul>
<li><code>~name</code> will be the value entered by user in the name field</li>
<li><code>~email</code> will be the entered in the email field, and so on</li>
</ul>
<p>If we skip the <code>~</code>, like <code>"confirmed": "0"</code> Then the literal value is used.</p>
<p><code>Reference: "user",</code> We have this to allow the "outcome" to be referenced when evaluating the next outcome. Let us see the other outcomes</p>
<h2 id="javascript-in-fields-">JavaScript in fields - "!..."</h2>
<div class="codehilite"><pre><span></span><code><span class="w">        </span><span class="err">{</span><span class="w"></span>
<span class="w">            </span><span class="nl">Type</span><span class="p">:</span><span class="w">      </span><span class="ss">&quot;usergroup&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">            </span><span class="k">Method</span><span class="err">:</span><span class="w">    </span><span class="ss">&quot;POST&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">            </span><span class="nl">Reference</span><span class="p">:</span><span class="w"> </span><span class="ss">&quot;usergroup&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">            </span><span class="nl">Attributes</span><span class="p">:</span><span class="w"> </span><span class="k">map</span><span class="o">[</span><span class="n">string</span><span class="o">]</span><span class="n">interface</span><span class="err">{}{</span><span class="w"></span>
<span class="w">                </span><span class="ss">&quot;name&quot;</span><span class="err">:</span><span class="w"> </span><span class="ss">&quot;!&#39;Home group for &#39; + user.name&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">            </span><span class="err">}</span><span class="p">,</span><span class="w"></span>
<span class="w">        </span><span class="err">}</span><span class="p">,</span><span class="w"></span>
</code></pre></div>

<p>Daptin embeds the <a href="https://github.com/robertkrimen/otto">otto js engine</a>. An exclamation mark sets to evaluate the rest of the string as Javascript.</p>
<p><code>'Home group for ' + user.name</code> becomes "Home group for parth"</p>
<h2 id="referencing-previous-outcomes">Referencing previous outcomes</h2>
<div class="codehilite"><pre><span></span><code><span class="w">        </span><span class="err">{</span><span class="w"></span>
<span class="w">            </span><span class="nl">Type</span><span class="p">:</span><span class="w">      </span><span class="ss">&quot;user_user_id_has_usergroup_usergroup_id&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">            </span><span class="k">Method</span><span class="err">:</span><span class="w">    </span><span class="ss">&quot;POST&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">            </span><span class="nl">Reference</span><span class="p">:</span><span class="w"> </span><span class="ss">&quot;user_usergroup&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">            </span><span class="nl">Attributes</span><span class="p">:</span><span class="w"> </span><span class="k">map</span><span class="o">[</span><span class="n">string</span><span class="o">]</span><span class="n">interface</span><span class="err">{}{</span><span class="w"></span>
<span class="w">                </span><span class="ss">&quot;user_id&quot;</span><span class="err">:</span><span class="w">      </span><span class="ss">&quot;$user.reference_id&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">                </span><span class="ss">&quot;usergroup_id&quot;</span><span class="err">:</span><span class="w"> </span><span class="ss">&quot;$usergroup.reference_id&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w">            </span><span class="err">}</span><span class="p">,</span><span class="w"></span>
<span class="w">        </span><span class="err">}</span><span class="p">,</span><span class="w"></span>
</code></pre></div>

<p>the <code>$</code> sign is to refer the reference variables. Here this outcome adds the newly created user to the newly created usergroup.</p>

              
            </article>
          </div>
        </div>
        
      </main>
      
        <footer class="md-footer">
  
    <nav class="md-footer__inner md-grid" aria-label="Footer">
      
        
        <a href="../../apis/crud/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Metadata API" rel="prev">
          <div class="md-footer__button md-icon">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
          </div>
          <div class="md-footer__title">
            <div class="md-ellipsis">
              <span class="md-footer__direction">
                Previous
              </span>
              Metadata API
            </div>
          </div>
        </a>
      
      
        
        <a href="../default_actions/" class="md-footer__link md-footer__link--next" aria-label="Next: Actions list" rel="next">
          <div class="md-footer__title">
            <div class="md-ellipsis">
              <span class="md-footer__direction">
                Next
              </span>
              Actions list
            </div>
          </div>
          <div class="md-footer__button md-icon">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
          </div>
        </a>
      
    </nav>
  
  <div class="md-footer-meta md-typeset">
    <div class="md-footer-meta__inner md-grid">
      <div class="md-copyright">
  
  
    Made with
    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
      Material for MkDocs
    </a>
  
</div>
      
    </div>
  </div>
</footer>
      
    </div>
    <div class="md-dialog" data-md-component="dialog">
      <div class="md-dialog__inner md-typeset"></div>
    </div>
    <script id="__config" type="application/json">{"base": "../..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing", "select.version.title": "Select version"}, "search": "../../assets/javascripts/workers/search.bd0b6b67.min.js"}</script>
    
    
      <script src="../../assets/javascripts/bundle.5413a266.min.js"></script>
      
    
  </body>
</html>